<script>
	// 封装请求函数
	let ajaxTimes = 0;
	export default {
		globalData: {
			//全局开发者服务器接口地址，一般有开发地址以及生产地址，接口地址有多个可以切换使用              
			//requesturl: 'http://192.168.3.92:8067', //郝龙旭地址
			requesturl: 'http://60.208.85.81:8001', //正式域名
			//requesturl: 'http://192.168.3.77:9290',//姚文静地址
			//requesturl: 'https://isdapp.shandong.gov.cn/jpaas-jags-server/interface/gateway',//爱山东地址

			jsdm: '01-0219',
			/**发起网络请求。
			 * @param {开发者服务器接口地址} url
			 * @param {请求的参数} data
			 * @param {必须大写，有效值在不同平台差异说明不同} method
			 * @param {收到开发者服务器成功返回的回调函数} callback
			 */
			// 全局请求函数
			global_request: (url, data, method, flag) => {
				// 保存当前this
				let that = this;
				data.jsdm = getApp().globalData.jsdm

				console.log("global_request----------", method + getApp().globalData.requesturl + url, data)
				// 配置请求头
				var header = {
					'Content-Type': 'application/x-www-form-urlencoded',
					'Authorization': 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiI2MiIsImlhdCI6IjE2ODQzODA1MzkiLCJuYmYiOiIxNjg0MzgwNTM5IiwiZXhwIjoiMTc0NzUzODkzOSIsImh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd3MvMjAwOC8wNi9pZGVudGl0eS9jbGFpbXMvZXhwaXJhdGlvbiI6IjIwMjUvNS8xOCAxMToyODo1OSIsImlzcyI6IkJsb2cuQ29yZSIsImF1ZCI6WyJ3ciIsIndyIl0sIm5hbWUiOiJqaW5hbmh5aHMiLCJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dzLzIwMDgvMDYvaWRlbnRpdHkvY2xhaW1zL3JvbGUiOiIxIn0.2W2ZYk29AsnK3espP0nT8V87K76mZFutwn_8MMLSDW4'
				};
				// 如果从本地存储得到有token,请求的时候加上token
				if (uni.getStorageSync('token')) {
					//! 请求参数加入token值
					header.authorization = uni.getStorageSync('token') //.token.access_token;
				}

				ajaxTimes++;
				// 显示加载中 效果
				uni.showLoading({
					title: "加载中...",
				});
				/**
				 * 使用Promise的方式解决回调问题
				 * 调用这个函数后返回一个promise
				 * resolve方法接收成功回调
				 * reject方法接收错误
				 * 在外部可以使用调用时 可使用async await
				 * */
				return new Promise((resolve, reject) => {
					// 使用uniapp自带的请求函数
					uni.request({
						// 判断url的地址是否含有:引号,如果有就是有http://xxxxx的地址使用这个地址,如果没有就是这里配置的基础地址加上传输过来的地址拼接
						url: url.split(':')[0] == 'http' ? url : getApp().globalData.requesturl + url,
						// 传输的data
						data: data,
						// 头信息
						header: header,
						// 传输的方法
						method: method,
						// 解析传输回来的json格式为对象形式
						dataType: 'json',

						// 调用请求成功回调
						success: function(res) {
							console.log(url + "----------", res)

							if (res.data.status == 200) {
								resolve(res);
							} else if (res.data.status == 401) {
								uni.showToast({
									title: '登录已过期,请重新登录',
									icon: 'none',
									duration: 2000,
									success: function(res) {
										// 移除token
										uni.removeStorageSync('token');
									}
								});
								setTimeout(() => {
									// 延时1s跳转到登录页面
									uni.navigateTo({
										//url: '/subPackages/login/newPage'
									});
								}, 1000);
							} else if (res.data.status == 500) {
								uni.showToast({
									title: res.data.msg,
									icon: 'none',
									duration: 2000
								});
								if (flag == 'requestFile') {
									resolve(res);
								}
								uni.$emit('z-paging-error-emit');
							} else {
								// 如果状态码不为200,400,500,调用global_Toast函数报错
								getApp().globalData.global_Toast(true, res.data.msg, function(
									res) {});
							}
						},
						// 请求失败回调
						fail: function(err) {
							uni.showToast({
								title: '网络错误，请稍后再试',
								icon: 'none',
								duration: 2000
							});
							uni.$emit('z-paging-error-emit');
						},
						// 完成请求回调
						complete: () => {
							ajaxTimes--;
							if (ajaxTimes === 0) {
								//  关闭正在等待的图标
								uni.hideLoading();
							}
						}
					});
				});
			},

			global_downloadFile: (url, data) => {
				// 保存当前this
				let that = this;

				/**
				 * 使用Promise的方式解决回调问题
				 * 调用这个函数后返回一个promise
				 * resolve方法接收成功回调
				 * reject方法接收错误
				 * 在外部可以使用调用时 可使用async await
				 * */
				return new Promise((resolve, reject) => {
					// 使用uniapp自带的请求函数
					//下载文件
					console.log(url.split(':')[0] == 'http' ? url : getApp().globalData.requesturl + url +
						'?FilePath=' + data.FilePath + '&fileName=' + data.fileName)
					uni.downloadFile({ //只能是GET请求
					 url: url.split(':')[0] == 'http' ? url : getApp().globalData.requesturl + url +
							'?FilePath=' + data.FilePath + '&fileName=' + data.fileName, //请求地址
						// header:{
						//   'Authorization':'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiI2MiIsImlhdCI6IjE2ODQzODA1MzkiLCJuYmYiOiIxNjg0MzgwNTM5IiwiZXhwIjoiMTc0NzUzODkzOSIsImh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd3MvMjAwOC8wNi9pZGVudGl0eS9jbGFpbXMvZXhwaXJhdGlvbiI6IjIwMjUvNS8xOCAxMToyODo1OSIsImlzcyI6IkJsb2cuQ29yZSIsImF1ZCI6WyJ3ciIsIndyIl0sIm5hbWUiOiJqaW5hbmh5aHMiLCJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dzLzIwMDgvMDYvaWRlbnRpdHkvY2xhaW1zL3JvbGUiOiIxIn0.2W2ZYk29AsnK3espP0nT8V87K76mZFutwn_8MMLSDW4'
						// },
						success: (res) => {
							//下载成功
							console.log(res)
							if (res.statusCode === 200) {
								uni.showToast({
									title: '下载成功',
								})
								var oA = document.createElement("a");
								oA.download = ''; // 设置下载的文件名，默认是'下载'
								oA.href = res.tempFilePath; //临时路径再保存到本地
								document.body.appendChild(oA);
								oA.click();
								oA.remove(); // 下载之后把创建的元素删除


								//保存文件
								// uni.saveFile({
					 		//   tempFilePath:res.tempFilePath,//下载成功之后返回的临时路径
								//   success:(e)=>{
								//     //保存成功之后 打开文件
								//     uni.openDocument({
					  	//       filePath: e.savedFilePath,
								//       fail:(e)=>{
								//         uni.showToast({
								//           title: `打开失败`+e
								//         })
								//       }
								//     })
								//   },
								//   fail:(e)=>{
								//     uni.showToast({
								//       title: `保存失败`+e
								//     })
								//   }
								// })
							}
						},
					 fail: (e) => {
							this.isDownloading = false
							uni.showToast({
								title: `文件下载失败` + e,
								icon: "none",
							})
						}
					});
				});
			},

			/**保留当前页面，跳转到应用内的某个页面，使用uni.navigateBack可以返回到原页面。
			 * @param {需要跳转的应用内非 tabBar 的页面的路径 , 路径后可以带参数。参数与路径之间使用?分隔，参数键与参数值用=相连，不同参数用&分隔；如 'path?key=value&key2=value2'，path为下一个页面的路径，下一个页面的onLoad函数可得到传递的参数} url
			 * @param {接口调用成功的回调函数} callback
			 */
			global_navigateTo: function(url, callback) {
				uni.navigateTo({
					url: url,
					success: function(res) {
						callback(res);
					}
				});
			},

			/**显示/隐藏消息提示框
			 * @param {flag：显示消息提示框 ！flag：隐藏消息提示框} flag
			 * @param {提示的内容，长度与 icon 取值有关} title
			 * @param {接口调用成功的回调函数} callbcak
			 */
			global_Toast: function(flag, title, callbcak) {
				if (flag) {
					uni.showToast({
						title: title,
						icon: 'none',
						duration: 5000,
						success: function(res) {
							callbcak(res);
						}
					});
				} else {
					uni.hideToast();
				}
			}
		}
	};
</script>

<style>
	/*每个页面公共css */

	::-webkit-scrollbar {
		display: none;
		width: 0;
		height: 0;
		color: transparent;
	}

	rich-text img {
		width: 100%;
		object-fit: contain;
	}

	rich-text image {
		width: 100%;
		object-fit: contain;
	}

</style>
